package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.BaseBuildInfo;
import com.softer.wxzj.entity.BaseRegionInfo;
import com.softer.wxzj.entity.OrgBuildAudit;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2020/5/29
 */
@Repository
public interface OrgBuildAuditMapper {
    /**
     * 修改自然幢绑定的状态
     *
     * @param orgBuildAudit 绑定信息
     * @return 修改结果
     */
    int updateState(OrgBuildAudit orgBuildAudit);

    /**
     * 新增自然幢绑定
     *
     * @param orgBuildAudit 自然幢绑定信息
     * @return 结果
     */
    int add(OrgBuildAudit orgBuildAudit);

    /**
     * 查询绑定的自然幢列表
     *
     * @param baseBuildInfo 查询实体
     * @return 自然幢列表
     */
    List<BaseBuildInfo> getOrgBuildAuditList(BaseBuildInfo baseBuildInfo);

    /**
     * 查询小区下可以绑定的自然幢列表
     * （自己物业下已经保存的，审核中的，审核通过的不查询）
     *
     * @param regionId 小区ID
     * @param operNo   外网登录账号
     * @return 自然幢列表
     */
    List<BaseBuildInfo> getAddBuildList(@Param("regionId") String regionId, @Param("operNo") String operNo);

    /**
     * 删除绑定的自然幢（只有未提交审核的可以删除）
     *
     * @param orgBuildAuditId 绑定的自然幢ID
     * @return 删除结果
     */
    int deleteAudit(String orgBuildAuditId);

    /**
     * 查询当前绑定的自然幢状态
     *
     * @param orgBuildAuditId 绑定的ID
     * @return 状态
     */
    String getFlowState(String orgBuildAuditId);

    /**
     * 修改绑定的自然幢的状态
     *
     * @param buildAuditList 绑定的ID集合
     * @param uuid           申请的ID
     * @param operNo         登录账号
     * @param state          状态
     * @return 修改结果
     */
    int updateAuditState(@Param("buildAuditList") String buildAuditList, @Param("operNo") String operNo, @Param("uuid") String uuid, @Param("state") String state);

    /**
     * 查询绑定的小区ID
     *
     * @param orgBuildAuditId 绑定的自然幢的ID
     * @return 小区ID
     */
    String getRegionId(String orgBuildAuditId);

    /**
     * 查询绑定的自然幢列表
     * 用于下拉列表
     *
     * @param baseBuildInfo 查询实体
     * @return 自然幢列表
     */
    List<BaseBuildInfo> getAllOrgBuildAuditList(BaseBuildInfo baseBuildInfo);

    /**
     * 修改自然幢信息中的物业公司
     *
     * @param buildAuditList 绑定的自然幢
     * @param modifier       登录人
     * @return 修改结果
     */
    int updateBuildAuditState(@Param("buildAuditList") String buildAuditList,  @Param("modifier") String modifier);
    /**
     * 修改自然幢信息中的物业公司
     *
     * @param buildAuditList 绑定的自然幢
     * @param companyId      物业公司ID
     * @param modifier       登录人
     * @return 修改结果
     */
    int updateBuildInfo(@Param("buildAuditList") String buildAuditList, @Param("companyId") String companyId, @Param("modifier") String modifier);

    /**
     * 修改自然幢信息中的物业公司
     *
     * @param regionId  小区ID
     * @param companyId 物业公司ID
     * @param modifier  登录人
     * @return 修改结果
     */
    void updateRegionInfo(@Param("regionId") String regionId, @Param("companyId") String companyId, @Param("modifier") String modifier);

    /**
     * 管辖范围
     *
     * @param operNo
     * @return
     */
    List<BaseRegionInfo> getAllRegionByOperNo(String operNo);

    /**
     * 查询详情
     *
     * @return
     */
    List<OrgBuildAudit> selectByRegionAuditId(OrgBuildAudit orgBuildAudit);

    void deleteOrgBuildByOperNo(String operNo);

    /**
     * 查询主账号管理的当前小区的自然幢
     * @param regionId 小区ID
     * @param operNo 主账号
     * @return 自然幢集合
     */
    List<OrgBuildAudit> getListByOperNoAndRegionId(@Param("regionId") String regionId,@Param("operNo") String operNo);
}
